Архитектура роста
Коллекции на языке Rust, такие как Vec<T> и String, не являются примитивными типами; они — структуры, определённые в библиотеке и находящиеся в модуле std модуля. Этот фундамент определяет, как язык Rust организует данные через систему модулей и управляет памятью с помощью RAII (инициализация приобретения ресурсов). В то время как простые типы хранятся на стеке, коллекции используют хранение на куче для динамического роста, что означает, что память должна управляться явно через Drop трейт.
Разрешение модулей и видимость
Компилятор языка Rust строит дерево модулей, начиная с корня крейта (src/lib.rs или src/main.rs). Объявление, подобное mod front_of_house; заставляет компилятор искать файлы src/front_of_house.rs или src/front_of_house/mod.rs. Использование pub модификаторов и повторной экспортирования (pub use), позволяет безопасно интерфейсироваться с заключёнными данными, выделенными на куче, через идиоматические пути.
Как только область действия модуля завершается, реализация Drop автоматически освобождает память кучи: $$Memory_{reclaimed} = \sum Drop(Элементов)$$.